A storage network environment may comprise one or more storage computing devices (e.g., a storage controller, a node, a storage server, etc.) configured to provide clients with access to user data stored across one or more storage devices. A storage computing device may host various storage processes configured to process and/or transmit data from the storage computing device to a destination storage computing device. For example, a snapshot storage process may be configured to create snapshots of a volume of data hosted by the storage computing device, where a snapshot corresponds to a point in time representation of files and directories of the volume. A storage replication process may be configured to format a snapshot into a format that can be transmitted from the storage computing device to the destination storage computing device for backup and/or failover recovery purposes. For example, the destination storage computing device may utilize the snapshot to keep a mirrored volume, hosted at the destination storage computing device and corresponding to a replication of the volume hosted by the storage computing device, in an up-to-date state so that the mirrored volume may be used to provide failover client access to mirrored user data in the event the storage computing device fails. The maintenance of a remote mirrored volume may require networking communication. In order to use the networking communication bandwidth efficiently, these storage processes may do some other computations. For example, a storage process may compress the data being communicated over a network, in order to better utilize the available network bandwidth. Such processes may require the use of auxiliary computing resources.
Computing resources of the storage computing device, such as memory, CPU cycles, etc., may be allocated for use by a storage process. For example, an amount of primary memory may be allocated for the storage replication process to utilize as a cache. Amounts of computing resource allocation may be specified based upon theoretical performance estimates for a given hardware configuration or a history of resource utilization. Unfortunately, too many resources or too little resources may be allocated, which may affect performance of the storage process and/or other processes hosted by the storage computing device. If too many resources are allocated to the storage process and go unused, then other processes may provide diminished performance than if such processes had access to the unused resources. If not enough resources are allocated to the storage process, then the storage process may not produce data fast enough to keep up with available bandwidth for transmitting the data, and thus network bandwidth may be underutilized. Resource allocation estimation may be imprecise and may result in inefficiencies, such as wasted resources and/or underperforming processes due to a lack of adequate resources, because a variety of changing factors may affect how many resources a storage process may fruitfully utilize (e.g., if resources are allocated to a storage process based upon a relatively high bandwidth of a network card, then the storage process may utilize less resources than expected due to a relatively lower network throughput of a network communication channel compared to the throughput of the network card).